package com.snopy.leetcode.index1_1000.index901_1000;

/**
 * @author snopy
 * @version 1.0.0
 * @classname Question942
 * @description 增减字符串匹配
 *
 * 由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ，其中:
 *
 * 如果perm[i] < perm[i + 1]，那么s[i] == 'I'
 * 如果perm[i] > perm[i + 1]，那么 s[i] == 'D'
 * 给定一个字符串 s ，重构排列perm 并返回它。如果有多个有效排列perm，则返回其中 任何一个 。
 *
 * 示例 1：
 *
 * 输入：s = "IDID"
 * 输出：[0,4,1,3,2]
 * 示例 2：
 *
 * 输入：s = "III"
 * 输出：[0,1,2,3]
 * 示例 3：
 *
 * 输入：s = "DDI"
 * 输出：[3,2,0,1]
 * @email 77912204@qq.com
 * @date 2022/05/09 20:12
 */
public class Question942 {
    public static void main(String[] args) {
        String s = "DDI";
        int[] nums = diStringMatch(s);
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+"\t");
        }
    }
    public static int[] diStringMatch(String s) {
        int pre = 0,last = s.length(),l = last;
        int[] nums = new int[last+1];
        for (int i=0;i < l;++i){
            nums[i] = s.charAt(i) == 'I' ? pre++ : last--;
        }
        nums[l] = last;
        return nums;
    }

}
